package com.pureut.scheduling.service;

import com.pureut.scheduling.domain.SchedulingCalendar;
import com.pureut.scheduling.domain.dto.*;
import com.pureut.scheduling.domain.vo.CalendarSpecialVo;
import com.pureut.scheduling.domain.vo.HolidayVo;
import com.pureut.scheduling.domain.vo.SchedulingCalendarVo;

import java.io.IOException;
import java.util.List;

/**
 * @Description
 * @Date 工厂日历
 * @Author hl
 **/
public interface ISchedulingCalendarService {

    /**
     * 工厂日历查询
     */
    List<SchedulingCalendarDto> selectCalendarList(SchedulingCalendarVo schedulingCalendarVo);

    /**
     * 新增工厂日历
     */
    int insertSchedulingCalendar(SchedulingCalendar schedulingCalendar) throws Exception;

    /**
     * 批量删除工厂日历
     */
    int deleteCalendarById(String calendarId);

    /**
     * 修改工厂日历
     */
    int updateCalendarEdit(SchedulingCalendar schedulingCalendar) throws Exception;

    /**
     * 查询单个工厂日历
     */
    SchedulingCalendarDto selectCalendarById(long calendarId);

    /**
     * 新增特殊工厂日历
     */
    int insertCalendarSpecia(CalendarSpecialVo calendarSpecialVo) throws Exception;

    /**
     * 查询特殊工厂日历
     */
    List<CalendarSpecialDto> selectCalendarSpecialList(CalendarSpecialVo calendarSpecialVo);

    /**
     * 批量特殊工厂日历
     */
    int deleteCalendarSpecialById(String calendarId) throws Exception;

    /**
     * 修改特殊工厂日历
     */
    int updateCalendarSpecialEdit(CalendarSpecialVo calendarSpecialVo) throws Exception;

    /**
     * 查询单个特殊工厂日历
     */
    CalendarSpecialDto selectCalendarSpecialById(long calendarId);

    /**
     * 日历查看
     */
    List<HolidayVo> selectCalendarViewing(int year, int month,long lineId) throws IOException;

    /**
     * 工厂日历下拉
     * @param calendarSpecialVo
     * @return
     */
    List<ShopCalendarDto> selectShopCalendarList(CalendarSpecialVo calendarSpecialVo);

    /**
     * 根据工厂日历id查询班次
     * @param calendarId
     * @return 下拉菜单
     */
    List<ShiftCalendarDto> selectShiftCalendarList(Long calendarId);

    /**
     * 根据工厂日历id查询线别
     * @param calendarId
     * @return
     */
    List<LineTypeCalendarDto> selectLineTypeCalendarList(Long calendarId);

    /**
     * 根据工厂日历id查询班别设置信息
     * @param calendarId
     * @return
     */
    List<ShiftSettingDto> selectShiftSettingList(Long calendarId);

    /**
     * 根据线别编码查询班次信息
     * @param lineCode
     * @return
     */
    List<ShiftSettingDto> selectShiftLine(String lineCode);


}
